|
ITU-T H.262 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
項目 |
|
記述 |
ビット数 |
ニーモニック |
|
|
|
|
|
|
|
|
|
6. |
2. |
2. |
|
ビデオシーケンス |
|
video_sequence() { |
|
|
|
|
|
|
next_start_code() |
|
|
|
|
|
|
sequence_header |
|
|
|
|
|
|
if (nextbits()==extension_start_code) { |
|
|
|
|
|
|
sequence_extension() |
|
|
|
|
|
|
do { |
|
|
|
|
|
|
extension_and_user_data(0) |
|
|
|
|
|
|
do { |
|
|
|
|
|
|
if (nextbits()==group_start_code) { |
|
|
|
|
|
|
group_of_pictures_header() |
|
|
|
|
|
|
extension_and_user_data(1) |
|
|
|
|
|
|
} |
|
|
|
|
|
|
picture_header() |
|
|
|
|
|
|
picture_coding_extension() |
|
|
|
|
|
|
extension_and_user_data(2) |
|
|
|
|
|
|
picture_data() |
|
|
|
|
|
|
} while((nextbits()==picture_start_code) ||
(nextbits()==group_start_code)) |
|
|
|
|
|
|
if(nextbits()!=sequence_end_code) { |
|
|
|
|
|
|
sequence_header() |
|
|
|
|
|
|
sequence_extension() |
|
|
|
|
|
|
} |
|
|
|
|
|
|
} while(nextbits()==sequence_end_code) |
|
|
|
|
|
|
} else { |
|
|
|
|
|
|
/*ISO/IEC 11172-2*/ |
|
|
|
|
|
|
} |
|
|
|
|
|
|
sequence_end_code |
32 |
bslbf |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6. |
2. |
2. |
|
ビデオシーケンス |
|
|
|
|
|
6. |
2. |
2. |
1. |
|
シーケンスヘッダ |
|
sequence_header() { |
|
|
|
|
|
|
Sequence_header_code |
32 |
bslbf |
|
|
|
|
|
horizontal_size_value |
12 |
uimsbf |
|
|
|
|
|
vertical_size_value |
12 |
uimsbf |
|
|
|
|
|
aspect_ratio_information |
4 |
uimsbf |
|
|
|
|
|
frame_rate_code |
4 |
uimsbf |
|
|
|
|
|
bit_rate_value |
18 |
uimsbf |
|
|
|
|
|
marker_bit |
1 |
"1" |
|
|
|
|
|
vbv_buffer_size_value |
10 |
uimsbf |
|
|
|
|
|
constrained_parameters_flag |
1 |
|
|
|
|
|
|
load_intra_quantiser_matrix |
1 |
|
|
|
|
|
|
if(load_non_intra_quantiser_matrix) |
|
|
|
|
|
|
intra_quantiser_matrix[64] |
8*64 |
uimsbf |
|
|
|
|
|
load_non_intra_quantiser_matrix |
1 |
|
|
|
|
|
|
if(load_non_intra_quantiser_matrix) |
|
|
|
|
|
|
non_intra_quantiser_matrix[64] |
8*64 |
uimsbf |
|
|
|
|
|
next_start_code() |
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6. |
2. |
2. |
|
ビデオシーケンス |
|
|
|
|
|
6. |
2. |
2. |
2. |
|
拡張データおよびユーザデータ |
|
extension_and_user_data(i) { |
|
|
|
|
|
|
while
(((I!=1)its()&&(nextbits()=extension_start_code)) ||
(nextbits()==user_data_start_code)) { |
|
|
|
|
|
|
if(nextbits()==extension_start_code) |
|
|
|
|
|
|
extension_data(i) |
|
|
|
|
|
|
if(nextbits()==user_data_start_code) |
|
|
|
|
|
|
user_data() |
|
|
|
|
|
|
} |
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6. |
2. |
2. |
|
ビデオシーケンス |
|
|
|
|
|
6. |
2. |
2. |
2. |
|
拡張データおよびユーザデータ |
|
|
|
|
|
6. |
2. |
2. |
2. |
1. |
拡張データ |
|
extension_data(i) { |
|
|
|
|
|
|
while(nextbits()==extension_start_code) { |
32 |
bslbf |
|
|
|
|
|
extension_start_code |
|
|
|
|
|
|
if (i==0) {
/*follows sequence_extension() */ |
|
|
|
|
|
|
if(nextbits()=="Sequence Display Extension ID") |
|
|
|
|
|
|
sequence_display_extension() |
|
|
|
|
|
|
else |
|
|
|
|
|
|
sequence_scalable_extension() |
|
|
|
|
|
|
} |
|
|
|
|
|
|
} /*
Note: extension never follows a group_of_pistures header() */ |
|
|
|
|
|
|
if(i == 2) {
/* follows picture_coding_extension() */ |
|
|
|
|
|
|
if(nextbits()=="Quant Matrix Extension ID") |
|
|
|
|
|
|
quant_matrix_extension() |
|
|
|
|
|
|
else if(nextbits()=="Copyright Extension ID") |
|
|
|
|
|
|
copyright_extension() |
|
|
|
|
|
|
else if(nextbits()=="Picture Display Extension ID") |
|
|
|
|
|
|
picture_display_extension() |
|
|
|
|
|
|
else if(nextbits()=="Picture Spatial Scalable Extension
ID") |
|
|
|
|
|
|
picture_spatial_scalable_extension() |
|
|
|
|
|
|
else |
|
|
|
|
|
|
picture_temoral_scalable_ectension() |
|
|
|
|
|
|
} |
|
|
|
|
|
|
} |
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6. |
2. |
2. |
|
ビデオシーケンス |
|
|
|
|
|
6. |
2. |
2. |
2. |
|
拡張データおよびユーザデータ |
|
|
|
|
|
6. |
2. |
2. |
2. |
2. |
ユーザデータ |
|
user_data() { |
|
|
|
|
|
|
user_data_start_code |
32 |
bslbf |
|
|
|
|
|
while(nextbits()!='0000 0000 0000 0000 0000 0001') { |
|
|
|
|
|
|
user_data |
8 |
|
|
|
|
|
|
} |
|
|
|
|
|
|
next_start_code() |
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6. |
2. |
2. |
|
ビデオシーケンス |
|
|
|
|
|
6. |
2. |
2. |
3. |
|
シーケンス拡張 |
|
sequence_extension() { |
|
|
|
|
|
|
extension_start_code |
32 |
bslbf |
|
|
|
|
|
extension_start_code_identifier |
4 |
uimsbf |
|
|
|
|
|
profile_and_level_indication |
8 |
uimsbf |
|
|
|
|
|
progressive_sequence |
1 |
uimsbf |
|
|
|
|
|
chroma_format |
2 |
uimsbf |
|
|
|
|
|
horizontal_size_extension |
2 |
uimsbf |
|
|
|
|
|
vertical_size_extension |
2 |
uimsbf |
|
|
|
|
|
bit_rate_extension |
12 |
uimsbf |
|
|
|
|
|
marker_bit |
1 |
bslbf |
|
|
|
|
|
vbv_buffer_size_extension |
8 |
uimsbf |
|
|
|
|
|
low_delay |
1 |
uimsbf |
|
|
|
|
|
frame_rate_extension_n |
2 |
uimsbf |
|
|
|
|
|
frame_rate_extension_d |
5 |
uimsbf |
|
|
|
|
|
next_start_code() |
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6. |
2. |
2. |
|
ビデオシーケンス |
|
|
|
|
|
6. |
2. |
2. |
4. |
|
シーケンス表示拡張 |
|
sequence_display_extension()
{ |
|
本勧告は、表示処理について定義しない。この拡張の情報は、復号化処理に影響せず、本勧告に準拠する復号器は、この情報を無視できる。 |
x |
|
|
|
|
|
extension_start_code_identifier |
4 |
uimsbf |
|
|
|
|
|
video_format |
3 |
uimsbf |
|
|
|
|
|
colour_description |
1 |
uimsbf |
|
|
|
|
|
if (colour_discription) { |
|
|
|
|
|
|
colour_primaries |
8 |
uimsbf |
|
|
|
|
|
transfer_characteristics |
8 |
uimsbf |
|
|
|
|
|
matrix_coefficients |
8 |
uimsbf |
|
|
|
|
|
} |
|
|
|
|
|
|
display_horizontal_size |
14 |
uimsbf |
|
|
|
|
|
marker_bit |
1 |
bslbf |
|
|
|
|
|
display_vertical_extension |
14 |
uimsbf |
|
|
|
|
|
next_start_code() |
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6. |
2. |
2. |
|
ビデオシーケンス |
|
|
|
|
|
6. |
2. |
2. |
5. |
|
シーケンススケーラブル拡張 |
|
sequence_scalable_extension()
{ |
|
|
|
|
|
|
extension_start_code_identifier |
4 |
uimsbf |
|
|
|
|
|
scalable_mode |
2 |
uimsbf |
|
|
|
|
|
layer_id |
4 |
uimsbf |
|
|
|
|
|
if(scalable mode=="spatial scalability") |
|
|
|
|
|
|
lower_layer_prediction_horizontal_size |
14 |
uimsbf |
|
|
|
|
|
marker_bit |
1 |
bslbf |
|
|
|
|
|
lower_layer_prediction_vertical_size |
14 |
uimsbf |
|
|
|
|
|
horizontal_subsampling_factor_m |
5 |
uimsbf |
|
|
|
|
|
horizontal_subsampling_factor_n |
5 |
uimsbf |
|
|
|
|
|
vertical_subsampling_factor_m |
5 |
uimsbf |
|
|
|
|
|
vertical_subsampling_factor_n |
5 |
uimsbf |
|
|
|
|
|
} |
|
|
|
|
|
|
if(scalable mode=="temporal scalability") |
|
|
|
|
|
|
picture_mux_enable |
1 |
uimsbf |
|
|
|
|
|
if (picture_mux_enable) |
|
|
|
|
|
|
mux_to_progressive_sequence |
1 |
uimsbf |
|
|
|
|
|
picture_mux_order |
3 |
uimsbf |
|
|
|
|
|
picture_mux_factor |
3 |
uimsbf |
|
|
|
|
|
} |
|
|
|
|
|
|
next_start_code() |
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6. |
2. |
2. |
|
ビデオシーケンス |
|
|
|
|
|
6. |
2. |
2. |
6. |
|
グループオブピクチャヘッダ |
|
group_of_pictures_header()
{ |
|
|
|
|
|
|
group_start_code |
32 |
bslbf |
|
|
|
|
|
time_code |
25 |
bslbf |
|
|
|
|
|
closed_gop |
1 |
uimsbf |
これは、1ビットのフラグで、グループオブピクチャヘッダに続く最初の符号化Iフレームピクチャの直後に続くBピクチャ(これがある場合)で使用される予測の種類を示す。 |
x |
|
|
|
|
|
broken_link |
1 |
uimsbf |
|
|
|
|
|
next_start_code() |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6. |
2. |
3. |
|
ピクチャヘッダ |
|
picture_header() { |
|
|
|
|
|
|
picture_start_code |
32 |
bslbf |
|
|
|
|
|
temporal_reference |
10 |
uimsbf |
|
|
|
|
|
picture_coding_type |
3 |
uimsbf |
|
|
|
|
|
vbv_delay |
16 |
uimsbf |
|
|
|
|
|
if(picture_coding_type==2 || picture_coding_type==3) { |
|
|
|
|
|
|
full_pel_backward_vector |
1 |
|
|
|
|
|
|
forward_f_code |
3 |
uimsbf |
|
|
|
|
|
} |
|
|
|
|
|
|
if(picture_coding_type==3) { |
|
|
|
|
|
|
full_pel_backward_vector |
1 |
|
|
|
|
|
|
backward_f_code |
3 |
uimsbf |
|
|
|
|
|
} |
|
|
|
|
|
|
while(nextbit()=='1') { |
|
|
|
|
|
|
extra_bit_picture /* with the value
"1" */ |
1 |
uimsbf |
|
|
|
|
|
extra_information_picture |
8 |
|
|
|
|
|
|
} |
|
|
|
|
|
|
extra_bit_picture /* with the value
"0" */ |
1 |
uimsbf |
|
|
|
|
|
next_start_code() |
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6. |
2. |
3. |
|
ピクチャヘッダ |
|
|
|
|
|
6. |
2. |
3. |
1. |
|
ピクチャコーディング拡張 |
|
picture_coding_extension()
{ |
|
|
|
|
|
|
extension_start_code |
|
|
|
|
|
|
extension_start_code_identifier |
|
|
|
|
|
|
f_code[0][0] /*
forward horizontal */ |
|
|
|
|
|
|
f_code[0][1] /*
forward vertical */ |
|
|
|
|
|
|
f_code[1][0] /*
backward horizontal */ |
|
|
|
|
|
|
f_code[1][1] /*
backward vertical */ |
|
|
|
|
|
|
intra_dc_precision |
|
|
|
|
|
|
picture_structure |
|
|
|
|
|
|
top_field_first |
|
|
|
|
|
|
frame_pred_frame_det |
|
|
|
|
|
|
condealment_motion_vectors |
|
|
|
|
|
|
q_scale_type |
|
|
|
|
|
|
intra_vlc_format |
|
|
|
|
|
|
alternate_scan |
|
|
|
|
|
|
repeat_first_field |
|
|
|
|
|
|
chroma_420_type |
|
|
|
|
|
|
prorgessive_frame |
|
|
|
|
|
|
composite_display_flag |
|
|
|
|
|
|
if( composite?display_flag ){ |
|
|
|
|
|
|
v_axis |
|
|
|
|
|
|
field_sequence |
|
|
|
|
|
|
sub_carrier |
|
|
|
|
|
|
burst_amplitude |
|
|
|
|
|
|
sub_carrier_phase |
|
|
|
|
|
|
} |
|
|
|
|
|
|
next_start_code() |
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6. |
2. |
3. |
|
ピクチャヘッダ |
|
|
|
|
|
6. |
2. |
3. |
2. |
|
量子化マトリックス拡張 |
|
quant_matrix_extension() { |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6. |
2. |
3. |
|
ピクチャヘッダ |
|
|
|
|
|
6. |
2. |
3. |
3. |
|
ピクチャディスプレイ拡張 |
|
picture_display_extension() { |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6. |
2. |
3. |
|
ピクチャヘッダ |
|
|
|
|
|
6. |
2. |
3. |
4. |
|
時間スケーラブル画像拡張 |
|
picture_temporal_scalable_extension() { |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6. |
2. |
3. |
|
ピクチャヘッダ |
|
|
|
|
|
6. |
2. |
3. |
5. |
|
空間スケーラブル画像拡張 |
|
picture_spacial_scalable_extension() { |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6. |
2. |
3. |
|
ピクチャヘッダ |
|
|
|
|
|
6. |
2. |
3. |
6. |
|
コピーライト(著作権)拡張 |
|
copyright_extension() { |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6. |
2. |
3. |
|
ピクチャヘッダ |
|
|
|
|
|
6. |
2. |
3. |
7. |
|
ピクチャデータ |
|
picture_data() { |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6. |
2. |
4. |
|
スライス |
|
slice() { |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6. |
2. |
5. |
|
マクロブロック |
|
macroblock() { |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6. |
2. |
5. |
|
マクロブロック |
|
|
|
|
|
6. |
2. |
5. |
1. |
|
マクロブロックモード |
|
macroblock_modes() { |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6. |
2. |
5. |
|
マクロブロック |
|
|
|
|
|
6. |
2. |
5. |
2. |
|
動きベクトル |
|
motion_vectors(s) { |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6. |
2. |
5. |
|
マクロブロック |
|
|
|
|
|
6. |
2. |
5. |
2. |
|
動きベクトル |
|
|
|
|
|
6. |
2. |
5. |
2. |
1. |
動きベクトル |
|
motion_vector(r,s) { |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6. |
2. |
5. |
|
マクロブロック |
|
|
|
|
|
6. |
2. |
5. |
2. |
|
動きベクトル |
|
|
|
|
|
6. |
2. |
5. |
2. |
2. |
符号化ブロックパタン |
|
code_block_pattern() { |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6. |
2. |
6. |
|
ブロック |
|
block(i) { |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|